using System;
using System.Collections.Generic;
using System.Text;

namespace Pechovic.CommandLine {
    public class Output {


        public static void Green() {
            Console.ForegroundColor = ConsoleColor.Green;
        }

        public static void Red() {
            Console.ForegroundColor = ConsoleColor.Red;
        }

        public static void Yellow() {
            Console.ForegroundColor = ConsoleColor.Yellow;
        }

        public static void Blue() {
            Console.ForegroundColor = ConsoleColor.Blue;
        }
        
        public static void Gray() {
            Console.ForegroundColor = ConsoleColor.Gray;
        }

        public static void Reset() {
            Console.ResetColor();
        }

        public static void WriteGreen(string value) {
            Green();
            Console.Write(value);
            Reset();
        }

        public static void WriteGreen(string value, params object[] args) {
            WriteGreen(string.Format(value, args));
        }

        public static void WriteGreenLine(string value) {
            Green();
            Console.WriteLine(value);
            Reset();
        }

        public static void WriteGreenLine(string value, params object[] args) {
            WriteGreenLine(string.Format(value, args));
        }

        public static void WriteRed(string value) {
            Red();
            Console.Write(value);
            Reset();
        }

        public static void WriteRed(string value, params object[] args) {
            WriteRed(string.Format(value, args));
        }

        public static void WriteRedLine(string value) {
            Red();
            Console.WriteLine(value);
            Reset();
        }

        public static void WriteRedLine(string value, params object[] args) {
            WriteRedLine(string.Format(value, args));
        }

        public static void WriteYellow(string value) {
            Yellow();
            Console.Write(value);
            Reset();
        }

        public static void WriteYellow(string value, params object[] args) {
            WriteYellow(string.Format(value, args));
        }

        public static void WriteYellowLine(string value) {
            Yellow();
            Console.WriteLine(value);
            Reset();
        }

        public static void WriteYellowLine(string value, params object[] args) {
            WriteYellowLine(string.Format(value, args));
        }

        public static void WriteBlue(string value) {
            Blue();
            Console.Write(value);
            Reset();
        }

        public static void WriteBlue(string value, params object[] args) {
            WriteBlue(string.Format(value, args));
        }

        public static void WriteBlueLine(string value) {
            Blue();
            Console.WriteLine(value);
            Reset();
        }

        public static void WriteBlueLine(string value, params object[] args) {
            WriteBlueLine(string.Format(value, args));
        }

        public static void WriteGray(string value) {
            Gray();
            Console.Write(value);
            Reset();
        }

        public static void WriteGray(string value, params object[] args) {
            WriteGray(string.Format(value, args));
        }

        public static void WriteGrayLine(string value) {
            Gray();
            Console.WriteLine(value);
            Reset();
        }

        public static void WriteGrayLine(string value, params object[] args) {
            WriteGrayLine(string.Format(value, args));
        }

    }
}
